﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace DynaSpace
{
	/// <summary>
	/// Základní třída pro komponenty enginu DynaSpace
	/// </summary>
	public class DynaComponentBase : DrawableGameComponent
	{
		private DynaGame game;
		
		/// <summary>
		/// Konstruktor herní komponenty
		/// </summary>
		/// <param name="game">Aktuální instance hry</param>
		public DynaComponentBase(DynaGame game)
			: base(game)
		{
			this.game = game;
		}

		/// <summary>
		/// Vrací nebo nastavuje adresář, který obsahuje data komponenty.
		/// </summary>
		internal string ContentFolder
		{
			get;
			set;
		}

		/// <summary>
		/// Načítá herní obsah pro komponentu v jejím adresáři v podsložce Content
		/// </summary>
		protected override void LoadContent()
		{
			base.LoadContent();
			// nastavit, aby se nacitaly data ze slozky komponenty
			(Game.Content as DynaContentManager).RootDirectory = this.ContentFolder;
		}

		/// <summary>
		/// Vrací <see cref="SpriteBatch"/> hry
		/// </summary>
		public SpriteBatch spriteBatch
		{
			get
			{
				return game.spriteBatch;
			}
		}
		
		/// <summary>
		/// Vrací hlavní objekt <see cref="DynaGame">hry</see>
		/// </summary>
		public new DynaGame Game
		{
			get
			{
				return game;
			}
		}

		/// <summary>
		/// Vrací hlavní herní objekt hry
		/// </summary>
		public Playground Playground
		{
			get
			{
				return game.p;
			}
			set
			{
				game.p = value;
			}
		}
	}
}
